/*
 * VentasDetalleModelListener.java
 *
 * Created on 10 de febrero de 2007, 10:40 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package inc.jmc.cyberboard.ui.ventas.common;

import inc.jmc.cyberboard.common.NumFormat;
import inc.jmc.cyberboard.log.Log;
import inc.jmc.cyberboard.ui.config.OpcionesFrm;
import inc.jmc.cyberboard.ui.ventas.VentasFrm;
import java.text.NumberFormat;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import org.apache.log4j.Logger;

/**
 *
 * @author Juan Miguel Olguin Salguero
 */
public class VentasDetalleModelListener implements TableModelListener {
    static Logger logger = Logger.getLogger(VentasDetalleModelListener.class.getName());
    VentasDetalleTableModel dtm;
    VentasFrm ventasParent;
    public VentasDetalleModelListener(VentasDetalleTableModel dtm,
                                      VentasFrm ventasParent
                                     )
    {
        this.dtm = dtm;
        this.ventasParent = ventasParent;
    }
    
    void updateTxts()
    {
                this.ventasParent.getArticulosTxt().setText(""+dtm.getCountArticulos());
                float ventaTotalAux = dtm.getVentaTotal();
                float ivaAux = ventaTotalAux * (OpcionesFrm.IVA);
                float subtotalAux = ventaTotalAux * (1-OpcionesFrm.IVA);
                String ventatotalStr = NumFormat.money(ventaTotalAux );
                String ivaStr = NumFormat.money(ivaAux );
                String subtotalStr = NumFormat.money(subtotalAux );
                this.ventasParent.getVentaTotalTxt().setText(ventatotalStr);
                this.ventasParent.getSubtotalTxt().setText(subtotalStr);
                this.ventasParent.getIvaTxt().setText(ivaStr);
    
    
    }

    public void tableChanged(TableModelEvent e) {
        int column = e.getColumn();
        int row = e.getFirstRow();
        if(e.getType()==TableModelEvent.UPDATE && column ==2)
        {
            row = e.getFirstRow();
            column = e.getColumn();
            String cantidad = (String)dtm.getValueAt(row, column);
            String precioUnitario = (String)dtm.getValueAt(row, column-1);
            try{
                float cantidad1 = Float.parseFloat(cantidad);
                if(cantidad1 == 0)
                {
                	cantidad1 = 1;
                	dtm.setValueAt("1",row, column);
                }
                float precioUnitario1 = Float.parseFloat(precioUnitario);
                float total = cantidad1 * precioUnitario1 ;
                String totalString = NumFormat.money(total);
                dtm.setValueAt(totalString,row, column+1);
                
                ///ahora ponemos el valor de la cantidad de equipos
                // y la cantidad de venta total en los campos de totales respectivos
                //tambien el subtotal y el IVA
                this.updateTxts();
                
            }
            catch(NumberFormatException ex)
            {
                dtm.setValueAt("1",row, column);
                String mensaje = ex.getMessage();
                logger.info("EXCEPTION EXCEPTION "+mensaje);
                ex.printStackTrace();
            }
        }
        else
        {
            if(e.getType()==TableModelEvent.DELETE || 
               e.getType()==TableModelEvent.INSERT
               )
            {
                this.updateTxts();
            }
        }
        
    }
    

}
